package model

import (
	"gorm.io/gorm"
	"service/basic/config"
	"time"
)

type Prescription struct {
	Id        uint      `gorm:"column:id;type:int UNSIGNED;primaryKey;not null;" json:"id"`
	OrderNo   string    `gorm:"column:order_no;type:varchar(255);comment:处方编号;not null;" json:"order_no"`                                   // 处方编号
	UserId    uint      `gorm:"column:user_id;type:int UNSIGNED;comment:用户id;not null;" json:"user_id"`                                       // 用户id
	DockerId  uint      `gorm:"column:docker_id;type:int UNSIGNED;comment:医生id;not null;" json:"docker_id"`                                   // 医生id
	Medicine  string    `gorm:"column:medicine;type:varchar(255);comment:处方药;not null;" json:"medicine"`                                     // 处方药
	Stock     uint      `gorm:"column:stock;type:int UNSIGNED;comment:药品数量;not null;" json:"stock"`                                         // 药品数量
	Price     float64   `gorm:"column:price;type:decimal(10, 2);comment:价格;not null;" json:"price"`                                           // 价格
	PreStstus uint      `gorm:"column:pre_ststus;type:int UNSIGNED;comment:处方审核状态：1未审核 2已审核;not null;default:1;" json:"pre_ststus"` // 处方审核状态：1未审核 2已审核
	PayType   uint      `gorm:"column:pay_type;type:int UNSIGNED;comment:支付方式: 1支付宝 2微信;not null;default:1;" json:"pay_type"`          // 支付方式: 1支付宝 2微信
	Status    uint      `gorm:"column:status;type:int UNSIGNED;comment:处方状态:1待支付 2已支付;not null;default:1;" json:"status"`             // 处方状态:1待支付 2已支付
	CreatedAt time.Time `gorm:"column:created_at;type:datetime(3);not null;" json:"created_at"`
	UpdatedAt time.Time `gorm:"column:updated_at;type:datetime(3);not null;" json:"updated_at"`
	DeletedAt time.Time `gorm:"column:deleted_at;type:datetime(3);default:NULL;" json:"deleted_at"`
}

func (p *Prescription) TableName() string {
	return "prescription"
}

// 订单添加
func (p *Prescription) Create() error {
	return config.DB.Create(&p).Error
}

// 处方审核
func (p *Prescription) UpdatePreStatus() error {
	return config.DB.Where("id = ?", p.Id).
		Update("pre_ststus", gorm.Expr("pre_ststus = ?", p.PreStstus)).
		Find(&p).Error
}
